From 92feecee6837c25f44f018d77e570681f970fe19 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Fri, 18 Jan 2008 14:11:20 -0700 Subject: [PATCH] [IA64] Fix thash long format crash Do not overwrite r25 (and restore r24) for C fallback of vmx_asm_thash. Signed-off-by: Tristan Gingold --- xen/arch/ia64/vmx/optvfault.S | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/xen/arch/ia64/vmx/optvfault.S b/xen/arch/ia64/vmx/optvfault.S index 69a5592922..8aa7a92044 100644 --- a/xen/arch/ia64/vmx/optvfault.S +++ b/xen/arch/ia64/vmx/optvfault.S @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -467,24 +468,26 @@ GLOBAL_ENTRY(vmx_asm_thash) ;; vmx_asm_thash_back1: shr.u r23=r19,61 // get RR number - adds r25=VCPU_VRR0_OFS,r21 // get vcpu->arch.arch_vmx.vrr[0]'s addr + adds r28=VCPU_VRR0_OFS,r21 // get vcpu->arch.arch_vmx.vrr[0]'s addr adds r16=IA64_VPD_VPTA_OFFSET,r16 // get virtual pta ;; - shladd r27=r23,3,r25 // get vcpu->arch.arch_vmx.vrr[r23]'s addr + shladd r27=r23,3,r28 // get vcpu->arch.arch_vmx.vrr[r23]'s addr ld8 r17=[r16] // get virtual PTA mov r26=1 ;; extr.u r29=r17,2,6 // get pta.size - ld8 r25=[r27] // get vcpu->arch.arch_vmx.vrr[r23]'s value + ld8 r28=[r27] // get vcpu->arch.arch_vmx.vrr[r23]'s value ;; // Fall-back to C if VF (long format) is set tbit.nz p6,p0=r17,8 mov b0=r24 - (p6) br.cond.dpnt.many vmx_virtualization_fault_back - extr.u r25=r25,2,6 // get rr.ps + ;; +(p6) mov r24=EVENT_THASH +(p6) br.cond.dpnt.many vmx_virtualization_fault_back + extr.u r28=r28,2,6 // get rr.ps shl r22=r26,r29 // 1UL << pta.size ;; - shr.u r23=r19,r25 // vaddr >> rr.ps + shr.u r23=r19,r28 // vaddr >> rr.ps adds r26=3,r29 // pta.size + 3 shl r27=r17,3 // pta << 3 ;; -- 2.30.2